//
//  MCCardManager.h
//  ApexIOTCardSDK
//
//  Created by 黄亮东 on 16/5/10.
//  Copyright © 2016年 珠海艾派克科技股份有限公司. All rights reserved.
//
/**
 *
 * 卡片读取缓冲或者称之为读卡历史记录管理器，本功能类实际逻辑与底层通讯或者存储规格协议无关，由SPI层实现，供上层应用及底层驱动调用。
 *
 * 需要特别提示的是，底层驱动应该要通过使用CardManager来保证本地缓冲以及每次新创建的Card以及CardFile对象保持数据一致性。
 *
 * @since 1.0
 * @version 1.0
 * @author ys
 *
 */
#import <Foundation/Foundation.h>
#import "MCCard.h"

@interface MCCardManager : NSObject

/**
 *  缓冲区最大容许存放的卡片数量
 */
@property (nonatomic, assign) NSInteger maxCardNum;

/**
 *  当前已存有的卡片数量
 */
@property (nonatomic, assign, readonly) NSInteger cardCount;

/**
 *  当前已存储的所有卡片
 */
@property (nonatomic, strong, readonly) NSMutableArray *cardList;

/**
 *  初始化方法，初始化后，将一次性获得所有缓存中的文件数据
 *
 *  @return 实例
 */
+ (instancetype)sharedInstance;

/**
 * 根据卡ID来获得指定的卡片，这些卡片一般是已经被系统读取并成功存储在缓冲中。
 *
 * @param id
 * @return
 */
- (MCCard *)getCardWithId:(NSString *)Id;

/**
 *  清除当前缓冲区中的所有卡片数据。
 */
- (void)clearCache;

/**
 *  移除指定卡片的数据
 *
 *  @param Id 卡片ID
 */
- (void)removeCardWithId:(NSString *)Id;
/**
 *  给卡片管理对象添加一张卡片
 *
 *  @param card 卡片对象
 */
- (void)addCard:(MCCard *)card;

@end
